// ============================== 导入依赖 ============================== //

import CORE from '@/CORE'

// ============================== 导出表单多选下拉框 ============================== //

export default {
  // —————————————————————————————— 公共覆盖 —————————————————————————————— //

  bind: { type: String, default: 'selectMulti' }, // 绑定键名，触发 @change 事件
  init: { type: Array, default: () => [] }, // 默认值

  // —————————————————————————————— 私有属性 —————————————————————————————— //

  dict: { type: Array, default: () => [] }, // 字典列表
  grayed: { type: Array, default: () => [] }, // 置灰列表
  noSearch: { type: Boolean, default: false }, // 能否搜索

  prefix: { type: String, default: '' }, // 前缀字符串，可使用插槽
  suffix: { type: String, default: '' }, // 后缀字符串，可使用插槽

  itemPre: { type: String, default: '' }, // 每个选项的前缀字符串
  itemSuf: { type: String, default: '' }, // 每个选项的后缀字符串

  hasRight: { type: Boolean, default: false }, // 下拉项右侧有无辅助信息 (dict 需为 [id, name, other])
  rightIndex: { type: Number, default: 2 }, // 右侧辅助信息的字典下标 (必须大于等于 2)

  double: { type: Boolean, default: false }, // 是否为两列布局
  triple: { type: Boolean, default: false }, // 是否为三列布局

  // —————————————————————————————— 多选属性 —————————————————————————————— //

  join: { type: Boolean, default: false }, // 是否为 , 分隔的合并串

  min: { type: Number, default: 0 }, // 最少项数
  max: { type: Number, default: 100 }, // 最多项数
  minErr: { type: String, default: '最少 {min} 项' }, // 最少项数错误信息 (自动将 {min} 替换为实际值)
  maxErr: { type: String, default: '最多 {max} 项' }, // 最多项数错误信息 (自动将 {max} 替换为实际值)

  limit: { type: Number, default: 0 }, // 个数限制 (为 0 表示不限制)
  fold: { type: Boolean, default: false }, // 是否折叠第二个及之后的选中项

  hasAll: { type: Boolean, default: false }, // 是否显示全选按钮
  allBtn: { type: Object, default: () => ({ title: '全选' }) }, // 全选的按钮配置 (见 BtnCommon)

  // —————————————————————————————— 方法属性 —————————————————————————————— //

  ...CORE.WEB.BASE.FUNCTION,
}
